import 'dart:io';

import 'package:fate_blind_box/config/app_style.dart';
import 'package:fate_blind_box/ui/login/login_by_pwd.dart';
import 'package:fate_blind_box/utils/page.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:shared_preferences/shared_preferences.dart';

import '../network/http_config.dart';
import '../theme/theme_color.dart';
import '../ui/login/WebView.dart';
import '../ui/login/login_wechat.dart';
import '../ui/login/view/privacy_web_view.dart';

dialogShow(BuildContext context) {
  showDialog(
      context: context,
      barrierColor: const Color(0x72000000),
      barrierDismissible: false,
      builder: (context) {
        return Align(
          alignment: Alignment.center,
          child: Container(
            margin: EdgeInsets.symmetric(horizontal: 44.w),
            decoration: BoxDecoration(
                color: Colors.white,
                borderRadius: BorderRadius.all(Radius.circular(8.w))),
            padding: EdgeInsets.symmetric(horizontal: 25.0.w, vertical: 12.w),
            child: SafeArea(
              bottom: true,
              child: Column(
                mainAxisSize: MainAxisSize.min,
                children: [
                  Text(
                    '欢迎来到都肆商圈！',
                    style: TextStyle(fontSize: 24.sp),
                  ),
                  SizedBox(height: 14.w),
                  Text.rich(TextSpan(children: [
                    const TextSpan(
                        text: "我们更新了《服务协议》及《隐私政策》,请您在使用我们服务前仔绅阅读",
                        style:
                            TextStyle(color: Color(0xFF222222), fontSize: 12)),
                    TextSpan(
                      text: "《隐私协议》",
                      style:
                          TextStyle(color: ThemeColor.appColor, fontSize: 12),
                      recognizer: TapGestureRecognizer()
                        ..onTap = () {
                          Navigator.push(context, MaterialPageRoute(
                              builder: (BuildContext context) {
                            return const PrivacyWebView(
                                '隐私协议', '${HttpConfig.baseUrl}priva');
                          }));
                        },
                    ),
                    const TextSpan(
                        text: "和",
                        style:
                            TextStyle(color: Color(0xFF222222), fontSize: 12)),
                    TextSpan(
                      text: "《服务协议》",
                      style:
                          TextStyle(color: ThemeColor.appColor, fontSize: 12),
                      recognizer: TapGestureRecognizer()
                        ..onTap = () {
                          Navigator.push(context, MaterialPageRoute(
                              builder: (BuildContext context) {
                            return const Browser(
                                '服务协议', '${HttpConfig.baseUrl}serv');
                          }));
                        },
                    ),
                    TextSpan(
                        text:
                            "服务协议作为我们提供服务的依据，确定您在何种条件、以何种方式使用偶然遇见的服务。隐私政策帮助您了解我们为什么，以及如何收集、存储、使用、保护的您个人信息，您可以点击问读完整内容，以便进-步了解。请您知悉，您同意隐私政策仅代表您已了解应用提供的功能，以及功能逵行所需的必要个人信息，并不代表您已同意我们可以收集非必要个人信息，非必要个人信息会根据您使用过程中的授权情况单独征求您的同意；另外，在您使用本应用时，我们会以弹窗的形式向您明确申请或获相机、相册、麦克风、通知、收集安装列表、微信开放平台SDK获取安装列表等权限，这些系统权限并不会默认开启，我们会在您使用到相应业务功能时，另行弹窗再次征得您的同意后开启。\n注意：",
                        style: const TextStyle(
                            color: Color(0xFF222222), fontSize: 12),
                        children: [
                          TextSpan(
                            recognizer: TapGestureRecognizer()
                              ..onTap = () {
                                Navigator.push(context, MaterialPageRoute(
                                    builder: (BuildContext context) {
                                  return const PrivacyWebView(
                                      '隐私协议', '${HttpConfig.baseUrl}priva');
                                }));
                              },
                            text:
                                "一些第三方的运营商会收集IMEI、设备MAC地址和软件安装列表、通讯录和短信权限。用于推送和统计数据，详情见《隐私协议》\n",
                            style: TextStyle(
                                color: ThemeColor.appColor, fontSize: 12),
                          ),
                          const TextSpan(
                            text: "点击“同意”，即视为您已阅读并同意上述内容。",
                            style: TextStyle(
                                color: Color(0xFF222222), fontSize: 12),
                          ),
                        ]),
                  ])),
                  Row(
                    children: [
                      const Spacer(),
                      TextButton(
                        child: const Text(
                          '不同意',
                          style: TextStyle(color: Colors.black38),
                        ),
                        onPressed: () async {
                          SharedPreferences pres =
                              await SharedPreferences.getInstance();
                          pres.setBool('PrivacyPolicyDialog', false);
                          // 用户选择不同意隐私政策
                          Navigator.of(context).pop(false);
                          exit(0);
                        },
                      ),
                      TextButton(
                        child: Text('同意',
                            style: TextStyle(color: ThemeColor.appColor)),
                        onPressed: () async {
                          SharedPreferences pres =
                              await SharedPreferences.getInstance();
                          pres.setBool('PrivacyPolicyDialog', true);
                          // 用户选择同意隐私政策
                          Navigator.of(context).pop(true);
                          // if (kIsWeb) {
                          //   Navigate.toPage(const LoginByWechat());
                          // } else {
                          //   Navigate.toPage(const LoginByPwd());
                          // }
                        },
                      ),
                    ],
                  )
                ],
              ),
            ),
          ),
        );
      });
}

class PrivacyPolicyDialog extends StatelessWidget {
  const PrivacyPolicyDialog({super.key});

  @override
  Widget build(BuildContext context) {
    return AlertDialog(
      title: const Text('欢迎来到都肆商圈！'),
      content: SingleChildScrollView(
        child: Text.rich(TextSpan(children: [
          const TextSpan(
              text: "我们更新了《服务协议》及《隐私政策》,请您在使用我们服务前仔绅阅读",
              style: TextStyle(color: Color(0xFF222222), fontSize: 12)),
          TextSpan(
            text: "《隐私协议》",
            style: TextStyle(color: ThemeColor.appColor, fontSize: 12),
            recognizer: TapGestureRecognizer()
              ..onTap = () {
                Navigator.push(context,
                    MaterialPageRoute(builder: (BuildContext context) {
                  return const PrivacyWebView(
                      '隐私协议', '${HttpConfig.baseUrl}priva');
                }));
              },
          ),
          const TextSpan(
              text: "和",
              style: TextStyle(color: Color(0xFF222222), fontSize: 12)),
          TextSpan(
            text: "《服务协议》",
            style: TextStyle(color: ThemeColor.appColor, fontSize: 12),
            recognizer: TapGestureRecognizer()
              ..onTap = () {
                Navigator.push(context,
                    MaterialPageRoute(builder: (BuildContext context) {
                  return const Browser('服务协议', '${HttpConfig.baseUrl}serv');
                }));
              },
          ),
          TextSpan(
              text:
                  "服务协议作为我们提供服务的依据，确定您在何种条件、以何种方式使用偶然遇见的服务。隐私政策帮助您了解我们为什么，以及如何收集、存储、使用、保护的您个人信息，您可以点击问读完整内容，以便进-步了解。请您知悉，您同意隐私政策仅代表您已了解应用提供的功能，以及功能逵行所需的必要个人信息，并不代表您已同意我们可以收集非必要个人信息，非必要个人信息会根据您使用过程中的授权情况单独征求您的同意；另外，在您使用本应用时，我们会以弹窗的形式向您明确申请或获相机、相册、麦克风、通知、收集安装列表、微信开放平台SDK获取安装列表等权限，这些系统权限并不会默认开启，我们会在您使用到相应业务功能时，另行弹窗再次征得您的同意后开启。\n注意：",
              style: const TextStyle(color: Color(0xFF222222), fontSize: 12),
              children: [
                TextSpan(
                  recognizer: TapGestureRecognizer()
                    ..onTap = () {
                      Navigator.push(context,
                          MaterialPageRoute(builder: (BuildContext context) {
                        return const PrivacyWebView(
                            '隐私协议', '${HttpConfig.baseUrl}priva');
                      }));
                    },
                  text:
                      "一些第三方的运营商会收集IMEI、设备MAC地址和软件安装列表、通讯录和短信权限。用于推送和统计数据，详情见《隐私协议》\n",
                  style: TextStyle(color: ThemeColor.appColor, fontSize: 12),
                ),
                const TextSpan(
                  text: "点击“同意”，即视为您已阅读并同意上述内容。",
                  style: TextStyle(color: Color(0xFF222222), fontSize: 12),
                ),
              ]),
        ])),
      ),
      actions: [
        TextButton(
          child: const Text(
            '不同意',
            style: TextStyle(color: Colors.black38),
          ),
          onPressed: () async {
            SharedPreferences pres = await SharedPreferences.getInstance();
            pres.setBool('PrivacyPolicyDialog', false);
            // 用户选择不同意隐私政策
            Navigator.of(context).pop(false);
            exit(0);
          },
        ),
        TextButton(
          child: Text('同意', style: TextStyle(color: ThemeColor.appColor)),
          onPressed: () async {
            SharedPreferences pres = await SharedPreferences.getInstance();
            pres.setBool('PrivacyPolicyDialog', true);
            // 用户选择同意隐私政策
            Navigator.of(context).pop(true);
            if (kIsWeb) {
              Navigate.toPage(const LoginByWechat());
            } else {
              Navigate.toPage(const LoginByPwd());
            }
          },
        ),
      ],
    );
  }
}

class RefuseView extends StatelessWidget {
  const RefuseView({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Align(
      alignment: Alignment.center,
      child: Container(
        margin: EdgeInsets.symmetric(horizontal: 40.w),
        decoration: BoxDecoration(
            color: Colors.white,
            borderRadius: BorderRadius.all(Radius.circular(12.w))),
        padding: EdgeInsets.symmetric(horizontal: 25.0.w, vertical: 12.w),
        child: SafeArea(
          bottom: true,
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
              const SizedBox(height: 12),
              Text(
                '由于您不同意小答应 《用户协议》和《隐私协议》 的相关内容，我们暂时无法为您提供服务。请谅解！',
                maxLines: 3,
              ),
              const SizedBox(height: 12),
              Divider(
                color: '999999'.stringToColor,
              ),
              const SizedBox(height: 4),
              InkWell(
                onTap: () => Navigator.pop(context),
                child: Row(
                  children: [
                    Expanded(
                      child: Text(
                        '返回',
                        maxLines: 3,
                        textAlign: TextAlign.center,
                      ),
                    ),
                  ],
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
